1. Field of the Invention
The present invention relates to personal computers, and more particularly, to a system for resolving conflicts encountered during the setup of personal computer hardware.
2. Description of the Related Art
The growth of the personal computer industry is attributable in part to the availability of inexpensive, yet powerful, personal computers. Improvements in processor, memory, data storage capability, and communications technologies have resulted in computers which can provide sufficient processing capability for applications such as multimedia, three dimensional (3D) animation, and teleconferencing, among others. To ensure manufacturing efficiency, common components of a computer such as a processor and a memory system are provided on a motherboard. The motherboard further provides one or more expansion buses to enable the motherboard to be customized to the user's specific requirements. The use of interchangeable circuit boards has allowed lower cost, highly-flexible computer systems to be developed.
After obtaining the motherboard, the user adds the desired circuit boards having the desired memory and input/output features to complete the computer system. In this way, individualized computer systems can be easily and efficiently developed. These circuit boards typically make complex demands on the computer system resources, particularly on the limited common computer resources such as interrupt request lines (IRQ lines), direct memory access (DMA) channels, and input/output and memory address space. Additionally, the circuit boards often require internal initialization or selection of internal options to meet the desired conditions. The configuration of a variety of circuit boards in the computer system leads to potential configuration conflicts and complex decisions to resolve such conflicts, particularly as the complexity of the circuit board increases or the installer's experience decreases. The choices are often made based on the reading of highly cryptic or obscure manuals. Further, on some older add-on boards, the actual configuration depends on the familiarity of the user with the printed circuit board. Although the appearance of add-on boards which support software reconfigurability via a Plug and Play (PnP) specification has eased the installation process somewhat, a need remains for an apparatus and a method for transparently resolving resource conflicts amongst the devices of the computer system.
Conflict resolution is the automated process of detecting resource conflicts and configuring peripheral devices so that they can work concurrently by using unique (or non-unique, and sharable) resources. The great difficulty experienced in resolving system conflicts is caused by the premium in system resources. Typically, a personal computer's architecture limits the number of system resources available to the devices, and each device can use any combination of the four resource types: interrupt request (IRQ) lines, direct memory access (DMA) channels, input-output (I/O) addresses and memory (MEM) addresses. The system's available resources are limited because the architecture restricts them to the following: 16 IRQ lines, 8 DMAs, I/O addresses within the region of 0x0000-0xFFFF and memory address ranges inside 0x000000000-0xFFFFFFFF. The DMA channels allow the peripherals to communicate with each other at burst speeds to move blocks of memory at a time. The interrupt vectors can often be shared with other devices, so long as only one device is in active use at any one time. The I/O ports are control registers by which the personal computer controls a particular hardware. The I/O ports may never be shared with any other devices. With respect to the memory, a section of personal computer address space, unused by the personal computer physical memory, virtual memory or other hardware devices, is available for interfacing to the peripheral devices. In modern peripheral devices, the setting of the interrupt, DMA and address options is performed by programming in various software-activated options. The initialization of software-activated options has to be included in special initialization procedures. As a result, configuration was very complex and time consuming. Further, conflicting devices which attempt to use the same machine resources need to be reconfigured to use unique resources after they have been detected. The memory segment configuration is the most common source of conflict due to (a) the limited amount of free memory address space under one megabyte, (b) the large number of programs, devices and memory managers vying for memory address space, and (c) the ability of the 80386 or later processors to dynamically reassign the memory address space. Further, unlike interrupt vector or I/O port conflicts which are hardware based, memory conflicts can be caused by conflicting software options.
The number of devices in the system using some combination of the above resources depends on the system and varies greatly. The system when shipped may contain roughly 18 devices and have roughly 4 slots for plug-in expansion cards. Since a plug-in card can usually have up to eight devices on a card, the number of devices in a system can increase significantly. Thus, it is not unheard of to have forty or fifty devices in a system, all clamoring for system resources. As the personal computer requires conflict-free configuration of resources for successful use, if the newly added peripheral is assigned to use resources already occupied, the resulting configuration conflict can produce a variety of symptoms: at one extreme, the personal computer may not boot, at the other extreme all devices may appear to function but operate with intermittent failures.
Further, interdependencies can exist between resources and affect the number of potential configurations for a device, the method by which resource combinations are assembled within the conflict resolution, and ultimately, the ease of resolving conflicts. Typically, one or more of a device's resource requirements may be defined as independent. Such a resource can be assigned any possible non-conflicting value supported by the device without checking any of its other resource requirements. Because of this flexibility, independent resources are considerably easier to assign to a device. It is also important to note that a device defining an independent resource must be configured to use that type of resource.
Two or more of a device's resource requirements may defined as dependent. Such resources can only be assigned in groups. Dependent resources are considerably more difficult to assign to a device as they limit the number of possible working configurations that can be assigned to a device. Further, some devices may use different resource types for different dependent resource groups.
To resolve system conflicts, the user historically had two choices. The first is to use a set-up package which is activated by pressing a F10 key upon a power-on-self-test (POST) sequence so that each resource value for each device can be altered until a conflict-free environment is established. For details of such a method, and for a review of the problems of conflict resolution generally, see U.S. Pat. No. 5,450,570, issued on Sep. 12, 1995 to Richek, et al., which is hereby incorporated by reference. The second option is to rely on a Plug and Play (PnP) operating system, such as Windows 95 to resolve the conflicts. However, both options are prone to failure in situations involving a large number of peripheral devices and options. Thus, what is needed is an apparatus and a method for setting up and installing expansion peripheral devices quickly and with confidence that the installation is correct.